Skip to content

Conversation

@jasmine-nahrain
Copy link
Collaborator

@jasmine-nahrain jasmine-nahrain commented Jan 8, 2026

Problem
OpenSSL provides SSL_client_hello_get0_ext(), SSL_client_hello_get0_ciphers() and SSL_client_hello_get1_extensions_present() to get client hello from an SSL object. BoringSSL doesn't have comparable functions. It requires the SSL_CLIENT_HELLO object via SSL_early_callback_ctx_extension_get(). Currently, there's no way to get the SSL_CLIENT_HELLO object in plugins, which causes friction when writing SSL-related plugins that need to work with both libraries.

Proposed Solution:

TSClientHello TSVConnClientHelloGet(TSVConn sslp);

This API provides access to the SSL_CLIENT_HELLO object within plugins and is usable during SSL hooks (TS_SSL_CLIENT_HELLO_HOOK, TS_SSL_SERVERNAME_HOOK).

Use Case: This enables plugins to access ClientHello data (cipher suites, extensions, SNI, ALPN, supported TLS versions) when using BoringSSL. Currently, the ja4_fingerprint plugin only works for openssl, this change allows us to add boringssl support.

Implementation Notes:

  • The SSL_CLIENT_HELLO is captured during the client hello callback and stored in TLSSNISupport
  • The data is valid during SSL handshake hooks
  • For OpenSSL, plugins can continue using existing TSSslConnectionGet() approach

This is a non-breaking addition. Existing OpenSSL-based plugins continue to work unchanged.

@jasmine-nahrain jasmine-nahrain self-assigned this Jan 8, 2026
@masaori335 masaori335 added the ja4_fingerprint Work related to JA4 fingerprinting label Jan 8, 2026
@masaori335 masaori335 added this to the 10.2.0 milestone Jan 8, 2026
@bryancall bryancall requested a review from bneradt January 12, 2026 22:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ja4_fingerprint Work related to JA4 fingerprinting Plugins

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants